#pragma once

#include <Runtime/Core/Core.h>
#include <Runtime/Graphics/Texture/Texture.h>
#include <Runtime/Graphics/Texture/TextureView.h>
#include <memory>

class TextureResource {
public:
	TextureResource() = default;
	TextureResource(const TextureResource&) = delete;
	TextureResource& operator=(const TextureResource&) = delete;
	~TextureResource() = default;

	void AllocateTexture();

	std::shared_ptr<Texture>& GetTexture() { return mTexture; }
	std::shared_ptr<TextureView>& GetTextureView() { return mTextureView; }

public:
	int mWidth;
	int mHeight;
	int mChannels;
	uint8* mPixelData;

private:
	std::shared_ptr<Texture> mTexture;
	std::shared_ptr<TextureView> mTextureView;


};